//  修改文件状态标志
//  setfl.c
//  programing_in_unix
//
//  Created by homcin on 2017/12/9.
//  Copyright © 2017年 tarshe. All rights reserved.
//

#include "apue.h"
#include <fcntl.h>

void set_fl(int fd, int flags)
{
    int val;
    
    if ((val = fcntl(fd, F_GETFL, 0)) < 0)
        err_sys("fcntl F_GETFL error");
    
    val |= flags;   /* turn on flag */
    
    if (fcntl(fd, F_SETFL, val) < 0)
        err_sys("fcntl F_SETFL error");
}

int main() {
    char buf[] = "abcd";
    
    set_fl(STDOUT_FILENO, O_SYNC);  // 标准输出开启同步写标志，每次write都要等待，直到数据已写到磁盘上再返回
    
    if (write(STDOUT_FILENO, buf, 4) != 4)
        err_sys("write error");
    
    exit(0);
}
